﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Saluse.MediaKit;

namespace OpenLightGroup.Visualizers
{
    /// <summary>
    /// Interface implemented by visualizer that allows them to be loaded with parameters 
    ///  and to respond to the samples taken from the media as it plays.
    /// </summary>
    public interface IVisualizer
    {
        
        /// <summary>
        /// Called when the visualizer is added to the screen. Allows any number of objects to be passed
        ///  into the visualizer.
        /// </summary>
        /// <param name="values">
        /// A list of values to be used by the visualizer during load. This may be null depending on the
        ///  needs of the visualizer.
        /// </param>
        void LoadParameters(params object[] values);

        /// <summary>
        /// Called each time the media element returns a new sample from the song.
        /// </summary>
        /// <param name="clip">
        /// SoundBite object containg the values of the current sample.
        /// </param>
        void UpdateUI(SoundBite clip);

    }
}
